package nlpir;

import java.io.File;

import com.sun.jna.Library;
import com.sun.jna.Native;

public class NLPIR_String {
	// 定义接口CLibrary，继承自com.sun.jna.Library
	public interface CLibrary extends Library {
		// 定义并初始化接口的静态变量
		CLibrary Instance = (CLibrary) Native.loadLibrary(
				new File("Fenci2014\\bin\\NLPIR").getAbsolutePath(), CLibrary.class);

		public int NLPIR_Init(String sDataPath, int encoding,
				String sLicenceCode);

		public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);

		public String NLPIR_GetLastErrorMsg();


		/**
		 * 文件分析
		 * 
		 * @param sSourceFilename
		 *            　需要分析的文件路径
		 * @param sResultFilename
		 *            　文件分析后存放分析结果的文件路径
		 * @param bPOStagged
		 *            词性标注　0不标注　1标注
		 * @return double 分析成功返回　true 分析失败返回false
		 */
		public double NLPIR_FileProcess(String sSourceFilename,
				String sResultFilename, int bPOStagged);

		public void NLPIR_Exit();

	}

	/**
	 * 给定一个字符串将其进行分词
	 * 
	 * @param1 argu
	 * @param2 system_charset 编码方式
	 * @param3 nativeBytes 分词结果
	 */

	

	/**
	 * 返回一个字符串的分词方法
	 * 
	 * @param  str 要分词的句子
	 * @param charset_type (int) 1表示 utf-8, 0 表示 GBK格式编码
	 * @return String 分词结果
	 */
	public String stringSplit(String str,int charset_type,int bPOSTagged) {

		File file=new File("Fenci2014");
		String pathStr=file.getAbsolutePath();
		// String system_charset = "GBK";//GBK----0,utf-8 ---1
		int init_flag = CLibrary.Instance.NLPIR_Init(pathStr, charset_type, "0");
		String nativeBytes = null;
		if (0 == init_flag) {
			nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
			System.err.println("初始化失败！fail reason is " + nativeBytes);
		}
		try {
			nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(str, bPOSTagged);
			//注意，有时候下面这句话不能写，否则会出错。
//			CLibrary.Instance.NLPIR_Exit();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return nativeBytes;
	}
	
	
//	public static void main(String[] args){
//		String str="我们喜欢大数据！";
//		NLPIR_String n=new NLPIR_String();
//		System.out.println(n.stringSplit(str, 1));
//		
//	}
	
}
